<?php
class Crypt {

    private $key;

    public function __construct($key) {
	$this->key = $key;
    }

   	/**
	 * PHP DES 加密程式
	 *
	 * @param $key 密鑰（八個字元內）
	 * @param $encrypt 要加密的明文
	 * @return string 密文
	 */
	function encrypt($encrypt)
	{
		// 根據 PKCS#7 RFC 5652 Cryptographic Message Syntax (CMS) 修正 Message 加入 Padding
		$block = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_ECB);
		$pad = $block - (strlen($encrypt) % $block);
		$encrypt .= str_repeat(chr($pad), $pad);
	
		// 不需要設定 IV 進行加密
		$passcrypt = mcrypt_encrypt(MCRYPT_DES, $this->key, $encrypt, MCRYPT_MODE_ECB);
		return base64_encode($passcrypt);
	}
	   
   
   	/**
	 * PHP DES 解密程式
	 *
	 * @param $key 密鑰（八個字元內）
	 * @param $decrypt 要解密的密文
	 * @return string 明文
	 */
	function decrypt ($decrypt)
	{
		// 不需要設定 IV
		$str = mcrypt_decrypt(MCRYPT_DES, $this->key, base64_decode($decrypt), MCRYPT_MODE_ECB);
	
		// 根據 PKCS#7 RFC 5652 Cryptographic Message Syntax (CMS) 修正 Message 移除 Padding
		$pad = ord($str[strlen($str) - 1]);
		return substr($str, 0, strlen($str) - $pad);
	}
   
   
   /*
    public function encrypt($input) {
	$size = mcrypt_get_block_size('des', 'ecb');
	$input = $this->pkcs5_pad($input, $size);
	$key = $this->key;
	$td = mcrypt_module_open('des', '', 'ecb', '');
	$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
	@mcrypt_generic_init($td, $key, $iv);
	$data = mcrypt_generic($td, $input);
	mcrypt_generic_deinit($td);
	mcrypt_module_close($td);
	$data = base64_encode($data);
	return $data;
    }

    public function decrypt($encrypted) {
	$encrypted = base64_decode($encrypted);
	$key = $this->key;
	$td = mcrypt_module_open('des', '', 'ecb', '');
	//使用MCRYPT_DES算法,cbc模式  
	$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
	$ks = mcrypt_enc_get_key_size($td);
	@mcrypt_generic_init($td, $key, $iv);
	//初始处理                 
	$decrypted = mdecrypt_generic($td, $encrypted);
	//解密  
	mcrypt_generic_deinit($td);
	//结束               
	mcrypt_module_close($td);
	$y = $this->pkcs5_unpad($decrypted);
	return $y;
    }

    private function pkcs5_pad($text, $blocksize) {
	$pad = $blocksize - (strlen($text) % $blocksize);
	return $text . str_repeat(chr($pad), $pad);
    }

    private function pkcs5_unpad($text) {
	$pad = ord($text{strlen($text) - 1});
	if ($pad > strlen($text)) {
	    return false;
	}
	if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
	    return false;
	}
	return substr($text, 0, -1 * $pad);
    }
*/
    public function mydecrypt($data) {
		if ($data) {
			$info = $this->decrypt($data);
			$info = trim(stripslashes($info),'"');							//去除引号
			$array = json_decode($info, true);
	
			return $array;
		}
    }

    public function myencrypt($array) {
		if (is_array($array)) {
			$data = $this->encrypt(json_encode($array));
			return $data;
		}
    }

}
?>